package com.studyweb.service;

import com.studyweb.pojo.entity.UserCheckin;

import java.time.LocalDate;
import java.util.List;
import java.util.Map;

/**
 * 用户签到服务接口
 * 
 * @author StudyWeb Team
 * @since 1.0.0
 */
public interface UserCheckinService {
    
    /**
     * 用户签到
     *
     * @param userId 用户ID
     * @return 签到结果，包含连续签到天数和获得的积分
     */
    UserCheckin checkin(Long userId);
    
    /**
     * 获取用户今日签到状态
     *
     * @param userId 用户ID
     * @return 今日是否已签到
     */
    boolean isCheckedInToday(Long userId);
    
    /**
     * 获取用户连续签到天数
     *
     * @param userId 用户ID
     * @return 连续签到天数
     */
    int getConsecutiveDays(Long userId);
    
    /**
     * 获取用户指定日期的签到记录
     *
     * @param userId 用户ID
     * @param date 日期
     * @return 签到记录，如果不存在则返回null
     */
    UserCheckin getCheckinByDate(Long userId, LocalDate date);
    
    /**
     * 获取用户指定日期范围内的签到记录
     *
     * @param userId 用户ID
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 签到记录列表
     */
    List<UserCheckin> getCheckinRecordsByDateRange(Long userId, LocalDate startDate, LocalDate endDate);
}